home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / misc / volume15 / dmake-3.6 / part09 < prev    next >
Encoding:
Text File  |  1990-10-14  |  39.1 KB  |  1,104 lines

  1. Newsgroups: comp.sources.misc
  2. X-UNIX-From: dvadura@watdragon.waterloo.edu
  3. subject: v15i061: dmake version 3.6 (part 09/25)
  4. from: Dennis Vadura <dvadura@watdragon.waterloo.edu>
  5. Sender: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)
  6.  
  7. Posting-number: Volume 15, Issue 61
  8. Submitted-by: Dennis Vadura <dvadura@watdragon.waterloo.edu>
  9. Archive-name: dmake-3.6/part09
  10.  
  11. #!/bin/sh
  12. # this is part 9 of a multipart archive
  13. # do not concatenate these parts, unpack them in order with /bin/sh
  14. # file msdos/mscdos/mkswp.bat continued
  15. #
  16. CurArch=9
  17. if test ! -r s2_seq_.tmp
  18. then echo "Please unpack part 1 first!"
  19.      exit 1; fi
  20. ( read Scheck
  21.   if test "$Scheck" != $CurArch
  22.   then echo "Please unpack part $Scheck next!"
  23.        exit 1;
  24.   else exit 0; fi
  25. ) < s2_seq_.tmp || exit 1
  26. echo "x - Continuing file msdos/mscdos/mkswp.bat"
  27. sed 's/^X//' << 'SHAR_EOF' >> msdos/mscdos/mkswp.bat
  28. Xmv getinp.obj objects
  29. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp quit.c
  30. Xmv quit.obj objects
  31. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp basename.c
  32. Xmv basename.obj objects
  33. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp dump.c
  34. Xmv dump.obj objects
  35. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp macparse.c
  36. Xmv macparse.obj objects
  37. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp rulparse.c
  38. Xmv rulparse.obj objects
  39. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp percent.c
  40. Xmv percent.obj objects
  41. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp function.c
  42. Xmv function.obj objects
  43. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp msdos\ruletab.c
  44. Xmv ruletab.obj objects
  45. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp msdos\dirbrk.c
  46. Xmv dirbrk.obj objects
  47. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp msdos\runargv.c
  48. Xmv runargv.obj objects
  49. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp msdos\arlib.c
  50. Xmv arlib.obj objects
  51. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp msdos\_chdir.c
  52. Xmv _chdir.obj objects
  53. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp msdos\switchar.c
  54. Xmv switchar.obj objects
  55. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp msdos\rmprq.c
  56. Xmv rmprq.obj objects
  57. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp msdos\find.c
  58. Xmv find.obj objects
  59. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp msdos\spawn.c
  60. Xmv spawn.obj objects
  61. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp msdos\mscdos\tempnam.c
  62. Xmv tempnam.obj objects
  63. Xlink @msdos\mscdos\objswp.rsp,dmake.exe,NUL.MAP;
  64. SHAR_EOF
  65. echo "File msdos/mscdos/mkswp.bat is complete"
  66. chmod 0640 msdos/mscdos/mkswp.bat || echo "restore of msdos/mscdos/mkswp.bat fails"
  67. echo "x - extracting msdos/mscdos/mk60swp.bat (Text)"
  68. sed 's/^X//' << 'SHAR_EOF' > msdos/mscdos/mk60swp.bat &&
  69. Xmkdir objects
  70. Xmasm -t -mx -Dmcompact msdos\exec.asm;
  71. Xmv exec.obj objects
  72. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ infer.c
  73. Xmv infer.obj objects
  74. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ make.c
  75. Xmv make.obj objects
  76. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ stat.c
  77. Xmv stat.obj objects
  78. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ expand.c
  79. Xmv expand.obj objects
  80. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ string.c
  81. Xmv string.obj objects
  82. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ hash.c
  83. Xmv hash.obj objects
  84. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ dag.c
  85. Xmv dag.obj objects
  86. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ dmake.c
  87. Xmv dmake.obj objects
  88. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ path.c
  89. Xmv path.obj objects
  90. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ imacs.c
  91. Xmv imacs.obj objects
  92. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ sysintf.c
  93. Xmv sysintf.obj objects
  94. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ parse.c
  95. Xmv parse.obj objects
  96. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ getinp.c
  97. Xmv getinp.obj objects
  98. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ quit.c
  99. Xmv quit.obj objects
  100. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ basename.c
  101. Xmv basename.obj objects
  102. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ dump.c
  103. Xmv dump.obj objects
  104. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ macparse.c
  105. Xmv macparse.obj objects
  106. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ rulparse.c
  107. Xmv rulparse.obj objects
  108. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ percent.c
  109. Xmv percent.obj objects
  110. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ function.c
  111. Xmv function.obj objects
  112. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ msdos\ruletab.c
  113. Xmv ruletab.obj objects
  114. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ msdos\dirbrk.c
  115. Xmv dirbrk.obj objects
  116. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ msdos\runargv.c
  117. Xmv runargv.obj objects
  118. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ msdos\arlib.c
  119. Xmv arlib.obj objects
  120. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ msdos\_chdir.c
  121. Xmv _chdir.obj objects
  122. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ msdos\switchar.c
  123. Xmv switchar.obj objects
  124. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ msdos\rmprq.c
  125. Xmv rmprq.obj objects
  126. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ msdos\find.c
  127. Xmv find.obj objects
  128. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ msdos\spawn.c
  129. Xmv spawn.obj objects
  130. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ msdos\mscdos\tempnam.c
  131. Xmv tempnam.obj objects
  132. Xlink @msdos\mscdos\obj60swp.rsp,dmake.exe,NUL.MAP;
  133. SHAR_EOF
  134. chmod 0640 msdos/mscdos/mk60swp.bat || echo "restore of msdos/mscdos/mk60swp.bat fails"
  135. echo "x - extracting msdos/mscdos/mk60.bat (Text)"
  136. sed 's/^X//' << 'SHAR_EOF' > msdos/mscdos/mk60.bat &&
  137. Xmkdir objects
  138. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ infer.c
  139. Xmv infer.obj objects
  140. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ make.c
  141. Xmv make.obj objects
  142. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ stat.c
  143. Xmv stat.obj objects
  144. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ expand.c
  145. Xmv expand.obj objects
  146. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ string.c
  147. Xmv string.obj objects
  148. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ hash.c
  149. Xmv hash.obj objects
  150. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ dag.c
  151. Xmv dag.obj objects
  152. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ dmake.c
  153. Xmv dmake.obj objects
  154. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ path.c
  155. Xmv path.obj objects
  156. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ imacs.c
  157. Xmv imacs.obj objects
  158. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ sysintf.c
  159. Xmv sysintf.obj objects
  160. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ parse.c
  161. Xmv parse.obj objects
  162. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ getinp.c
  163. Xmv getinp.obj objects
  164. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ quit.c
  165. Xmv quit.obj objects
  166. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ basename.c
  167. Xmv basename.obj objects
  168. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ dump.c
  169. Xmv dump.obj objects
  170. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ macparse.c
  171. Xmv macparse.obj objects
  172. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ rulparse.c
  173. Xmv rulparse.obj objects
  174. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ percent.c
  175. Xmv percent.obj objects
  176. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ function.c
  177. Xmv function.obj objects
  178. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ msdos\ruletab.c
  179. Xmv ruletab.obj objects
  180. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ msdos\dirbrk.c
  181. Xmv dirbrk.obj objects
  182. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ msdos\runargv.c
  183. Xmv runargv.obj objects
  184. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ msdos\arlib.c
  185. Xmv arlib.obj objects
  186. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ msdos\_chdir.c
  187. Xmv _chdir.obj objects
  188. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ msdos\switchar.c
  189. Xmv switchar.obj objects
  190. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ msdos\rmprq.c
  191. Xmv rmprq.obj objects
  192. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Osecgle -Gs -D_MSC60_ msdos\mscdos\tempnam.c
  193. Xmv tempnam.obj objects
  194. Xlink @msdos\mscdos\obj60.rsp,dmake.exe,NUL.MAP;
  195. SHAR_EOF
  196. chmod 0640 msdos/mscdos/mk60.bat || echo "restore of msdos/mscdos/mk60.bat fails"
  197. echo "x - extracting msdos/mscdos/mk.bat (Text)"
  198. sed 's/^X//' << 'SHAR_EOF' > msdos/mscdos/mk.bat &&
  199. Xmkdir objects
  200. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp infer.c
  201. Xmv infer.obj objects
  202. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp make.c
  203. Xmv make.obj objects
  204. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp stat.c
  205. Xmv stat.obj objects
  206. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp expand.c
  207. Xmv expand.obj objects
  208. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp string.c
  209. Xmv string.obj objects
  210. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp hash.c
  211. Xmv hash.obj objects
  212. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp dag.c
  213. Xmv dag.obj objects
  214. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp dmake.c
  215. Xmv dmake.obj objects
  216. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp path.c
  217. Xmv path.obj objects
  218. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp imacs.c
  219. Xmv imacs.obj objects
  220. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp sysintf.c
  221. Xmv sysintf.obj objects
  222. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp parse.c
  223. Xmv parse.obj objects
  224. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp getinp.c
  225. Xmv getinp.obj objects
  226. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp quit.c
  227. Xmv quit.obj objects
  228. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp basename.c
  229. Xmv basename.obj objects
  230. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp dump.c
  231. Xmv dump.obj objects
  232. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp macparse.c
  233. Xmv macparse.obj objects
  234. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp rulparse.c
  235. Xmv rulparse.obj objects
  236. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp percent.c
  237. Xmv percent.obj objects
  238. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp function.c
  239. Xmv function.obj objects
  240. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp msdos\ruletab.c
  241. Xmv ruletab.obj objects
  242. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp msdos\dirbrk.c
  243. Xmv dirbrk.obj objects
  244. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp msdos\runargv.c
  245. Xmv runargv.obj objects
  246. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp msdos\arlib.c
  247. Xmv arlib.obj objects
  248. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp msdos\_chdir.c
  249. Xmv _chdir.obj objects
  250. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp msdos\switchar.c
  251. Xmv switchar.obj objects
  252. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp msdos\rmprq.c
  253. Xmv rmprq.obj objects
  254. Xcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -D__STDC__=1 -DM_I86=1 -mc -Zp msdos\mscdos\tempnam.c
  255. Xmv tempnam.obj objects
  256. Xlink @msdos\mscdos\obj.rsp,dmake.exe,NUL.MAP;
  257. SHAR_EOF
  258. chmod 0640 msdos/mscdos/mk.bat || echo "restore of msdos/mscdos/mk.bat fails"
  259. echo "x - extracting msdos/mscdos/libswp.rsp (Text)"
  260. sed 's/^X//' << 'SHAR_EOF' > msdos/mscdos/libswp.rsp &&
  261. X
  262. SHAR_EOF
  263. chmod 0640 msdos/mscdos/libswp.rsp || echo "restore of msdos/mscdos/libswp.rsp fails"
  264. echo "x - extracting msdos/mscdos/lib60swp.rsp (Text)"
  265. sed 's/^X//' << 'SHAR_EOF' > msdos/mscdos/lib60swp.rsp &&
  266. X
  267. SHAR_EOF
  268. chmod 0640 msdos/mscdos/lib60swp.rsp || echo "restore of msdos/mscdos/lib60swp.rsp fails"
  269. echo "x - extracting msdos/mscdos/lib60.rsp (Text)"
  270. sed 's/^X//' << 'SHAR_EOF' > msdos/mscdos/lib60.rsp &&
  271. X
  272. SHAR_EOF
  273. chmod 0640 msdos/mscdos/lib60.rsp || echo "restore of msdos/mscdos/lib60.rsp fails"
  274. echo "x - extracting msdos/mscdos/lib.rsp (Text)"
  275. sed 's/^X//' << 'SHAR_EOF' > msdos/mscdos/lib.rsp &&
  276. X
  277. SHAR_EOF
  278. chmod 0640 msdos/mscdos/lib.rsp || echo "restore of msdos/mscdos/lib.rsp fails"
  279. echo "x - extracting msdos/mscdos/config.mk (Text)"
  280. sed 's/^X//' << 'SHAR_EOF' > msdos/mscdos/config.mk &&
  281. X# This is the MSC 4.0 and higher DOS configuration file for DMAKE
  282. X#    It simply modifies the values of SRC, and checks to see if
  283. X#    OSENVIRONMENT is defined.  If so it includes the appropriate
  284. X#    config.mk file.
  285. X#
  286. X# It also sets the values of .SOURCE.c and .SOURCE.h to include the local
  287. X# directory.
  288. X#
  289. Xosrdir := $(OS)$(DIRSEPSTR)$(OSRELEASE)
  290. X
  291. XTMPDIR :=
  292. X.EXPORT : TMPDIR
  293. X
  294. X# Definition of macros for library, and C startup code.
  295. X
  296. X# The following sources are required for MSC
  297. XOSR_SRC = tempnam.c
  298. X.SETDIR=$(osrdir) : $(OSR_SRC)
  299. X
  300. XSRC += $(OSR_SRC)
  301. X.SOURCE.h : $(osrdir)
  302. X
  303. X# Local configuration modifications for CFLAGS, there's local BSD includes
  304. X# too.
  305. X# If you have a 286, you can use -G2 or appropriate to get better code, 
  306. X# in that case uncomment the line below.
  307. X#CFLAGS += -G2
  308. XCFLAGS += -I$(osrdir) -D__STDC__=1 -DM_I86=1 $(C_$(MODEL))
  309. XASFLAGS += -t -mx $(S_$(MODEL))
  310. X
  311. X# Redefine this, it isn't needed!
  312. XLDTAIL = ;
  313. X
  314. X# Debugging Flags
  315. XDB_CFLAGS     += -Zi
  316. XDB_LDFLAGS    += /co /li /map
  317. XDB_LDLIBS     +=
  318. X
  319. X# NO Debug flags, MSC 6.0 flags, set the environment variable MSC_VER to be
  320. X# 6.0 to get these by default when you make dmake using 'dmake'.
  321. X.IMPORT .IGNORE : MSC_VER
  322. X.IF $(MSC_VER) == 6.0
  323. X   NDB_CFLAGS    += -Osecgle -Gs -D_MSC60_
  324. X   DB_CFLAGS     += -D_MSC60_
  325. X   NDB_LDFLAGS   += /exe /packc /batch
  326. X   NDB_LDLIBS    +=
  327. X.ELSE
  328. X   NDB_CFLAGS    += -Zp
  329. X   DB_CFLAGS     += -Zp
  330. X.END
  331. X
  332. X# See if we modify anything in the lower levels.
  333. X.IF $(OSENVIRONMENT) != $(NULL)
  334. X   .INCLUDE .IGNORE : $(osrdir)$(DIRSEPSTR)$(OSENVIRONMENT)$(DIRSEPSTR)config.mk
  335. X.END
  336. X
  337. XC_s =
  338. XC_m = -mm
  339. XC_c = -mc
  340. XC_l = -ml
  341. X
  342. XS_s = -Dmsmall
  343. XS_m = -Dmmedium
  344. XS_c = -Dmcompact
  345. XS_l = -Dmlarge
  346. SHAR_EOF
  347. chmod 0640 msdos/mscdos/config.mk || echo "restore of msdos/mscdos/config.mk fails"
  348. echo "x - extracting msdos/mscdos/config.h (Text)"
  349. sed 's/^X//' << 'SHAR_EOF' > msdos/mscdos/config.h &&
  350. X/* RCS      -- $Header: /u2/dvadura/src/generic/dmake/src/msdos/mscdos/RCS/config.h,v 1.1 90/10/06 12:05:06 dvadura Exp $
  351. X-- SYNOPSIS -- Configurarion include file.
  352. X-- 
  353. X-- DESCRIPTION
  354. X--     There is one of these for each specific machine configuration.
  355. X--    It can be used to further tweek the machine specific sources
  356. X--    so that they compile.
  357. X--
  358. X-- AUTHOR
  359. X--      Dennis Vadura, dvadura@watdragon.uwaterloo.ca
  360. X--      CS DEPT, University of Waterloo, Waterloo, Ont., Canada
  361. X--
  362. X-- COPYRIGHT
  363. X--      Copyright (c) 1990 by Dennis Vadura.  All rights reserved.
  364. X-- 
  365. X--      This program is free software; you can redistribute it and/or
  366. X--      modify it under the terms of the GNU General Public License
  367. X--      (version 1), as published by the Free Software Foundation, and
  368. X--      found in the file 'LICENSE' included with this distribution.
  369. X-- 
  370. X--      This program is distributed in the hope that it will be useful,
  371. X--      but WITHOUT ANY WARRANTY; without even the implied warrant of
  372. X--      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  373. X--      GNU General Public License for more details.
  374. X-- 
  375. X--      You should have received a copy of the GNU General Public License
  376. X--      along with this program;  if not, write to the Free Software
  377. X--      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  378. X--
  379. X-- LOG
  380. X--     $Log:    config.h,v $
  381. X * Revision 1.1  90/10/06  12:05:06  dvadura
  382. X * dmake Release, Version 3.6
  383. X * 
  384. X*/
  385. X
  386. X/* define this for configurations that don't have the coreleft function
  387. X * so that the code compiles.  To my knowledge coreleft exists only on
  388. X * Turbo C, but it is needed here since the function is used in many debug
  389. X * macros. */
  390. X#define coreleft() 0L
  391. X
  392. X/*No parallelism in DOS so don't need to explode the graph. */
  393. X#define Explode_prq(a,b,c)
  394. X
  395. X/* MSC Version 4.0 doesn't understand SIGTERM, later versions do. */
  396. X#ifndef SIGTERM
  397. X#   define SIGTERM SIGINT
  398. X#endif
  399. X
  400. X/* Fixes unimplemented line buffering for MSC
  401. X * MSC _IOLBF is the same as _IOFBF
  402. X * This redefinition causes the following warning, but ignore it
  403. X * c:/usr/include/stdio.h(129) : warning C4005: '_IOLBF' : macro redefinition
  404. X */
  405. X#if defined(MSDOS) && defined (_MSC_VER)
  406. X#   undef  _IOLBF
  407. X#   define _IOLBF   _IONBF
  408. X#endif
  409. X
  410. X/* in alloc.h: size_t is redefined
  411. X * defined in stdio.h which is included alloc.h
  412. X */
  413. X#if defined(MSDOS) && defined (_MSC_VER)
  414. X#   define _TYPES_
  415. X#endif
  416. X
  417. X/* in sysintf.c: SIGQUIT is used, this is not defined in MSC */
  418. X#ifndef SIGQUIT
  419. X#   define SIGQUIT SIGTERM
  420. X#endif
  421. SHAR_EOF
  422. chmod 0440 msdos/mscdos/config.h || echo "restore of msdos/mscdos/config.h fails"
  423. echo "x - extracting msdos/find.c (Text)"
  424. sed 's/^X//' << 'SHAR_EOF' > msdos/find.c &&
  425. X/*
  426. X    Directory Access Library
  427. X
  428. X           FIND.C taken from DIRLIB.C by M. J. Weinstein
  429. X         Released to public domain 1-Jan-89
  430. X
  431. X    The author may be contacted at: 
  432. X    matt@cs.ucla.edu -or- POB 84524, L.A., CA  90073
  433. X
  434. X    Modified by dvadura@watdragon.edu to work with dmake.
  435. X    (nuked the DOS version 2 code, since dmake needs version
  436. X    3.0 or greater to function).
  437. X */
  438. X
  439. X
  440. X/*
  441. X * revision history:
  442. X *
  443. X *    VER    MM/DD/YY    COMMENTS
  444. X *    ----    --------    --------
  445. X *    0.99    02/24/86    Beta release to INTERNET
  446. X */
  447. X
  448. X#include <stdlib.h>
  449. X#include <ctype.h>
  450. X#include <errno.h>
  451. X#include <string.h>
  452. X#include <alloc.h>
  453. X#include <dos.h>
  454. X#include "dirlib.h"
  455. X
  456. X#ifndef MK_FP
  457. X#define MK_FP(seg,ofs)    ((void far *) \
  458. X               (((unsigned long)(seg) << 16) | (unsigned)(ofs)))
  459. X#endif
  460. X
  461. Xint              _err;
  462. Xstatic DTA far *_getsetdta ANSI((DTA far *));
  463. X
  464. X/*
  465. X * get/set dta address
  466. X */
  467. X
  468. Xstatic DTA far *
  469. X_getsetdta(newdta)
  470. XDTA far *newdta;
  471. X{
  472. X    DTA far *olddta;
  473. X    union REGS r;
  474. X    struct SREGS s;
  475. X
  476. X    /* get old dta */         
  477. X    r.h.ah = 0x2f;
  478. X    intdos(&r, &r);
  479. X    segread(&s);
  480. X    olddta = (DTA far *) MK_FP(s.es, r.x.bx);
  481. X
  482. X    /* conditionally set new dta */
  483. X    if (newdta) {
  484. X        r.h.ah = 0x1a;
  485. X        s.ds    = FP_SEG(newdta);
  486. X        r.x.dx    = FP_OFF(newdta);    
  487. X        intdosx(&r, &r, &s);
  488. X    }
  489. X
  490. X    return olddta;
  491. X}
  492. X
  493. X/*
  494. X * dos findfirst
  495. X */
  496. X
  497. XDTA *
  498. Xfindfirst(name, dta)
  499. Xchar *name;
  500. XDTA  *dta;
  501. X{
  502. X    union REGS r;  
  503. X    struct SREGS s;
  504. X    DTA far *dtasave;
  505. X    char far *nmp = (char far *)name;
  506. X
  507. X    dtasave = _getsetdta((DTA far *)dta);
  508. X    
  509. X    /* do directory lookup */
  510. X    segread(&s);
  511. X    r.h.ah    = 0x4e;
  512. X    r.x.cx    = 0x10;
  513. X    r.x.dx    = FP_OFF(nmp);
  514. X    s.ds    = FP_SEG(nmp);
  515. X    intdosx(&r, &r, &s);
  516. X    /* restore dta */
  517. X    _getsetdta(dtasave);
  518. X    _err = r.x.ax;
  519. X    if (r.x.cflag)
  520. X        return (DTA *) 0;
  521. X
  522. X    return dta;
  523. X}
  524. X
  525. X/*
  526. X * dos findnext
  527. X */
  528. X
  529. XDTA *
  530. Xfindnext(dta)
  531. XDTA *dta;
  532. X{
  533. X    union REGS r;  
  534. X    DTA far *dtasave;
  535. X
  536. X    dtasave = _getsetdta((DTA far *)dta);
  537. X
  538. X    /* do directory lookup */
  539. X    r.h.ah = 0x4f;
  540. X    intdos(&r, &r);
  541. X    /* restore old dta */
  542. X    _getsetdta(dtasave);
  543. X    _err = r.x.ax;
  544. X    if (r.x.cflag)
  545. X        return (DTA *) 0;
  546. X
  547. X    return dta;
  548. X}
  549. SHAR_EOF
  550. chmod 0440 msdos/find.c || echo "restore of msdos/find.c fails"
  551. echo "x - extracting msdos/exec.h (Text)"
  552. sed 's/^X//' << 'SHAR_EOF' > msdos/exec.h &&
  553. X#ifndef _EXEC_h_
  554. X#define _EXEC_h_
  555. X
  556. X#ifndef ANSI
  557. X#if defined(__STDC__) || defined(__TURBOC__)
  558. X#define ANSI(x) x
  559. X#else
  560. X#define ANSI(x) ()
  561. X#endif
  562. X#endif
  563. X
  564. Xextern int  exec ANSI((int, char far *, char far *, unsigned int,
  565. X               unsigned int, char far *));
  566. X
  567. X#ifndef MK_FP
  568. X#define MK_FP(seg,ofs) \
  569. X    ((void far *) (((unsigned long)(seg) << 16) | (unsigned)(ofs)))
  570. X#endif
  571. X
  572. X#endif
  573. SHAR_EOF
  574. chmod 0440 msdos/exec.h || echo "restore of msdos/exec.h fails"
  575. echo "x - extracting msdos/exec.asm (Text)"
  576. sed 's/^X//' << 'SHAR_EOF' > msdos/exec.asm &&
  577. X; You must assemble this file with masm (or tasm) flag
  578. X;    /dmmodel where model is one of {small, compact, medium, large}
  579. X;
  580. Xifdef msmall
  581. X            .model    small
  582. Xargbase        equ    4
  583. Xendif
  584. Xifdef mcompact
  585. X        .model  compact
  586. Xargbase        equ    4
  587. Xendif
  588. Xifdef mmedium
  589. X        .model    medium
  590. Xargbase        equ    6
  591. Xendif
  592. Xifdef mlarge
  593. X        .model    large
  594. Xargbase        equ    6
  595. Xendif
  596. Xa_swap        equ    <bp+argbase+0>
  597. Xa_prog        equ    <bp+argbase+2>
  598. Xa_tail        equ    <bp+argbase+6>
  599. Xa_env         equ    <bp+argbase+10>
  600. Xa_esiz        equ    <bp+argbase+12>
  601. Xa_tmp        equ    <bp+argbase+14>
  602. X
  603. X
  604. X; Define all useful equ's
  605. Xswap_xms    equ    0        ; we swapped it out to xms
  606. Xswap_ems    equ    2        ; we swapped it out to ems
  607. Xswap_file    equ    4        ; we swapped it out to a file
  608. Xseg_no_alloc    equ    0        ; this is part of a segment
  609. Xseg_alloc    equ    1        ; this is a full segment header
  610. Xseg_data    equ    2        ; this is data for part of a segment
  611. X
  612. X
  613. X; Define any global/external variables that we will be accessing from here.
  614. X            .data
  615. X        extrn    _errno:word        ; Set to dos ret code from exec
  616. X        public  _Interrupted        ; Set to 1 if interrupted 0
  617. X_Interrupted    dw    0            ; otherwise
  618. X
  619. X            .code
  620. X        assume    cs:@code, ds:@code, ss:@code, es:@code
  621. X
  622. Xexecstack    dw    64  dup (?)    ; put the temporary exec stack right
  623. Xexec_sp        label    word        ; at the start.
  624. X
  625. Xold_ss        dw    ?        ; save stack seg across exec
  626. Xold_sp        dw    ?        ; save stack ptr across exec
  627. Xprogsize    dw    ?        ; original size of the program
  628. Xresend        dw    ?        ; paragraph where resident code ends
  629. Xenvseg        dw    ?        ; paragraph of environment segment
  630. Xenvsize        dw    ?        ; length of environment in paragraphs
  631. Xpsp        dw    ?        ; our own psp
  632. Xswap        dw    ?        ; swapping selection flag
  633. Xretcode        dw    ?        ; return code from exec
  634. Xinterrupted    dw    ?        ; interrupted flag for exec
  635. Xarenahead    dw    ?        ; start of memory block list
  636. Xalstr        dw    ?        ; allocation strategy save spot
  637. Xin_exec        dw    0        ; flag, 1 ==> in exec
  638. X
  639. Xcmdpath        db    65  dup(?)    ; file to exec
  640. Xcmdtail        db    129 dup(?)    ; it's command tail
  641. Xfcb        db    37  dup(0)    ; dummy fcb
  642. Xtmpseg        db    7   dup(?)    ; block header buffer
  643. X
  644. Xtmpname        db    65  dup(0)    ; name of temporary file resource
  645. Xtmphandle    dw    ?        ; handle for temporary file
  646. X
  647. Xerror_rhdr    db    "exec: Failure reading header block", 0DH, 0AH, '$'
  648. Xerror_rseg    db    "exec: Failure reading segment data", 0DH, 0AH, '$'
  649. Xerror_resize    db    "exec: Failure on resize", 0DH, 0AH, '$'
  650. Xerror_free    db    "exec: Failure to free a block", 0DH, 0AH, '$'
  651. Xerror_string    db    "exec: Program swap failure", 0DH, 0AH, '$'
  652. Xerror_alloc    db    "exec: Memory blocks don't match", 0DH, 0AH, '$'
  653. X
  654. Xwrite_header label word
  655. X   whdr_xms_ptr        dw    word ptr whdr_xms
  656. X   whdr_ems_ptr        dw    word ptr whdr_ems
  657. X   whdr_file_ptr    dw    word ptr whdr_file
  658. X
  659. Xwrite_seg label word
  660. X   wseg_xms_ptr        dw    word ptr wseg_xms
  661. X   wseg_ems_ptr        dw    word ptr wseg_ems
  662. X   wseg_file_ptr    dw    word ptr wseg_file
  663. X
  664. Xread_header label word
  665. X   rhdr_xms_ptr        dw    word ptr rhdr_xms
  666. X   rhdr_ems_ptr        dw    word ptr rhdr_ems
  667. X   rhdr_file_ptr    dw    word ptr rhdr_file
  668. X
  669. Xread_seg label word
  670. X   rseg_xms_ptr        dw    word ptr rseg_xms
  671. X   rseg_ems_ptr        dw    word ptr rseg_ems
  672. X   rseg_file_ptr    dw    word ptr rseg_file
  673. X
  674. Xfree_resource label word
  675. X   free_xms_ptr        dw    word ptr free_xms_resource
  676. X   free_ems_ptr        dw    word ptr free_ems_resource
  677. X   free_file_ptr    dw    word ptr free_file_resource
  678. X
  679. Xreset_resource label word
  680. X   reset_xms_ptr    dw    word ptr reset_xms_resource
  681. X   reset_ems_ptr    dw    word ptr reset_ems_resource
  682. X   reset_file_ptr    dw    word ptr reset_file_resource
  683. X
  684. Xold_ctl_brk label dword
  685. X   old_ctl_brk_off    dw    ?
  686. X   old_ctl_brk_seg     dw    ?
  687. X
  688. Xold_crit_err label dword
  689. X   old_crit_err_off    dw    ?
  690. X   old_crit_err_seg     dw    ?
  691. X
  692. Xexec_block label word
  693. X  ex_envseg    dw    ?            ; env seg, use parent's if 0
  694. X  ex_cmdtail    dd    ?            ; command tail for exec
  695. X  ex_fcb1    dd    far ptr fcb        ; fcb's aren't used by dmake
  696. X  ex_fcb2    dd    far ptr fcb
  697. X  ex_ss        dw    ?            ; saved ss for exec
  698. X  ex_sp        dw    ?            ; saved sp for exec
  699. X  ex_error    dw    0            ; error code for dos exec
  700. X
  701. X;-----------------------------------------------------------------------------
  702. X; First define the critical-error and control-brk handlers. 
  703. X; The critical error handler simply pops the machine state and returns an
  704. X; access denied result code.
  705. Xcrit_err_handler proc near
  706. X        add    sp, 6        ; ip/cs/flags ...
  707. X        pop    ax
  708. X        pop    bx
  709. X        pop    cx
  710. X        pop    dx
  711. X        pop    si
  712. X        pop    di
  713. X        pop    bp
  714. X        pop    ds
  715. X        pop    es
  716. X        push    bp        ; fix up the return flags
  717. X        mov    bp, sp
  718. X        xchg    ax, [bp+6]    ; get the flag byte.
  719. X        or    ax, 1        ; set the carry bit
  720. X        xchg    ax, [bp+6]    ; put it back.
  721. X        pop    bp
  722. X        mov    ax, 5        ; access denied
  723. X        iret
  724. Xcrit_err_handler endp
  725. X
  726. X
  727. X;-----------------------------------------------------------------------------
  728. X; Here we set the interrupted flag, and terminate the currently running
  729. X; ess. proc 
  730. Xctl_brk_handler proc near
  731. X        inc    cs:interrupted        ; set the flag
  732. X
  733. X; Make certain it isn't us that is going to get terminated.
  734. X; There is a small window where the in_exec flag is set but the child is
  735. X; not running yet, I assume that DOS doesn't test for ctl_brk at that time
  736. X; as it is bussily creating a new ess. proc 
  737. X        cmp    cs:in_exec,0
  738. X        je    just_return
  739. X        mov    ax, 04cffH        ; stop the sucker!
  740. X        int    21H
  741. Xjust_return:    ret
  742. Xctl_brk_handler endp
  743. X
  744. X
  745. X;-----------------------------------------------------------------------------
  746. X; Something really nasty happened, so abort the exec call and exit.
  747. X; This kills the calling ess proc altogether, and is a very nasty way of
  748. X; termination since files may still be open etc.
  749. Xabort_exec_rhdr label near
  750. X        mov    dx, offset error_rhdr
  751. X        jmp    print_it
  752. Xabort_exec_rseg label near
  753. X        mov    dx, offset error_rseg
  754. X        jmp    print_it
  755. Xabort_exec_resize label near
  756. X        mov    dx, offset error_resize
  757. X        jmp    print_it
  758. Xabort_exec_free label near
  759. X        mov    dx, offset error_free
  760. X        jmp    print_it
  761. Xabort_exec_alloc label near
  762. X        mov    dx, offset error_alloc
  763. X        jmp    print_it
  764. Xabort_exec proc near
  765. X        mov    dx, offset error_string
  766. Xprint_it:    mov    bx, [swap]
  767. X        call    [free_resource+bx]
  768. X        mov    ax, cs
  769. X        mov    ds, ax
  770. X        mov    ah, 9
  771. X        int    21H
  772. Xkill_program:    mov    ax, 04cffH            ; nuke it!
  773. X        int    21H
  774. Xabort_exec endp
  775. X
  776. X
  777. X;-----------------------------------------------------------------------------
  778. X; lodsw/stosw loop to copy data.  Called only for word copy operations.
  779. X;     ds:si  - point at source
  780. X;    es:di  - point at destination
  781. X;    cx     - count of bytes to copy.
  782. Xcopy_data proc near
  783. X        shr    cx, 1        ; convert to word count
  784. X        jnc    copy_words
  785. X        movsb
  786. Xcopy_words:    rep    movsw        ; copy the words.
  787. X        ret
  788. Xcopy_data endp
  789. X
  790. X
  791. X
  792. X;=============================================================================
  793. X; THE FOLLOWING SECTION DEALS WITH ALL ROUTINES REQUIRED TO READ XMS RECORDS.
  794. X;=============================================================================
  795. Xrhdr_xms proc near
  796. X        ret
  797. Xrhdr_xms endp
  798. X
  799. Xrseg_xms proc near
  800. X        ret
  801. Xrseg_xms endp
  802. X
  803. Xreset_xms_resource proc near
  804. X        ret
  805. Xreset_xms_resource endp
  806. X
  807. Xfree_xms_resource proc near
  808. X        ret
  809. Xfree_xms_resource endp
  810. X;=============================================================================
  811. X
  812. X
  813. X
  814. X;=============================================================================
  815. X; THE FOLLOWING SECTION DEALS WITH ALL ROUTINES REQUIRED TO READ EMS RECORDS.
  816. X;=============================================================================
  817. Xrhdr_ems proc near
  818. X        ret
  819. Xrhdr_ems endp
  820. X
  821. Xrseg_ems proc near
  822. X        ret
  823. Xrseg_ems endp
  824. X
  825. Xreset_ems_resource proc near
  826. X        ret
  827. Xreset_ems_resource endp
  828. X
  829. Xfree_ems_resource proc near
  830. X        ret
  831. Xfree_ems_resource endp
  832. X;=============================================================================
  833. X
  834. X
  835. X
  836. X;=============================================================================
  837. X; THE FOLLOWING SECTION DEALS WITH ALL ROUTINES REQUIRED TO READ FILE RECORDS.
  838. X;=============================================================================
  839. X; This routine reads a segment header from a file.
  840. X; The header is a seven byte record formatted as follows:
  841. X;    segment address        - of data
  842. X;    offset address        - of data
  843. X;     length in paragraphs    - of data
  844. X;    mode            - 1 => segment header (allocate seg on read)
  845. X;                  0 => subsegment, don't allocate on read.
  846. X; The information is placed into the tmpseg data area in the code segment.
  847. X; The routine aborts if an error is detected.
  848. Xrhdr_file proc near
  849. X        mov    dx, offset tmpseg    ; read the header record out
  850. X        mov    cx, 7
  851. X        mov    bx, [tmphandle]
  852. X        mov    ah, 03fH
  853. X        int    21H
  854. X        jnc    rhdr_done        ; make sure it worked
  855. X        jmp    abort_exec_rhdr
  856. X
  857. Xrhdr_done:    cmp    ax, 7
  858. X        je    exit_rhdr_file
  859. X        or    ax, ax
  860. X        je    signal_eof
  861. X        jmp    abort_exec_rhdr
  862. X
  863. Xsignal_eof:    stc
  864. Xexit_rhdr_file:    ret
  865. Xrhdr_file endp
  866. X
  867. X
  868. X;-----------------------------------------------------------------------------
  869. X; Read a segment from the temporary file whose handle is in cs:tmphandle.
  870. X; The routine aborts if an error is detected.
  871. Xrseg_file proc near
  872. X        push    ds
  873. X        mov    ds, word ptr cs:tmpseg; Now read the whole segment
  874. X        mov    dx, word ptr cs:tmpseg+2
  875. X        mov    cx, word ptr cs:tmpseg+4
  876. X        mov    bx, cs:tmphandle
  877. X        mov    ah, 03fH
  878. X        int    21H
  879. X        pop    ds
  880. X        jnc    rseg_done
  881. X        jmp    abort_exec_rseg
  882. X
  883. Xrseg_done:    cmp    ax, [word ptr tmpseg+4]
  884. X        je    exit_rseg_file
  885. X        jmp    abort_exec_rseg        ; If we didn't get read full
  886. Xexit_rseg_file:    ret                ; segment then abort
  887. Xrseg_file endp
  888. X
  889. X
  890. X;-----------------------------------------------------------------------------
  891. X; Seek to the beginning of the file.
  892. Xreset_file_resource proc near
  893. X        mov    bx, [tmphandle]
  894. X        xor    cx, cx
  895. X        mov    dx, cx
  896. X        mov    ax, 04200H        ; seek to begining of file
  897. X        int    21H
  898. X        ret
  899. Xreset_file_resource endp
  900. X
  901. X
  902. X;-----------------------------------------------------------------------------
  903. X; unlink the temporary file allocated for swapping.
  904. X; We close the file first, and then delete it.   We ignore errors here since
  905. X; we can't do anything about them anyway.
  906. Xfree_file_resource proc near
  907. X        mov    bx, [tmphandle]        ; get the file handle
  908. X        mov    ah, 03eH        ; close the file
  909. X        int    21H
  910. X        mov    dx, offset tmpname    ; Now delete the temp file
  911. X        mov    ah, 041H
  912. X        int    21H
  913. X        ret
  914. Xfree_file_resource endp
  915. X;=============================================================================
  916. X
  917. X
  918. X
  919. X;=============================================================================
  920. X; CODE TO SWAP THE IMMAGE IN FROM SECONDARY STORAGE
  921. X;=============================================================================
  922. Xswap_in proc near
  923. X        mov    bx, [alstr]        ; get previous alloc strategy
  924. X        mov    ax, 5801H        ; and set it back
  925. X        int    21H
  926. X        mov    bx, [swap]        ; get type of resource
  927. X        call    [reset_resource+bx]    ; reset the resource
  928. X        mov    es, [psp]        ; resize the program back
  929. X        mov    bx, [progsize]        ; to original size
  930. X        mov    ah, 04AH
  931. X        int    21H
  932. X        jnc    read_seg_loop
  933. X        jmp    abort_exec
  934. X
  935. Xread_seg_loop:    mov    bx, [swap]        ; get type of resource
  936. X        call    [read_header+bx]    ; get seg header
  937. X        jc    exit_swap_in        ; all done
  938. X        mov    al, [tmpseg+6]
  939. X        cmp    al, seg_no_alloc    ; see if dummy segment header
  940. X        je    read_seg_loop
  941. X        cmp    al, seg_alloc        ; do we need to do an alloc?
  942. X        jne    read_data        ; nope
  943. X
  944. X; Allocate back the memory for a segment that is not the [psp], note that this
  945. X; must come back to the same segment we had previously since other segments
  946. X; may have pointers stored in their variables that point to this segment using
  947. X; segment:offset long pointers.
  948. X        mov    bx, [word ptr tmpseg+4]    ; get count of paragraphs
  949. X        mov    ah, 048H        ; dos_alloc
  950. X        int    21H
  951. X        jc    alloc_error        ; oops!
  952. X        cmp    ax, [word ptr tmpseg]    ; did we get the same segment?
  953. X        je    read_seg_loop        ; yup!
  954. Xalloc_error:    jmp    abort_exec_alloc
  955. X
  956. Xread_data:    mov    bx, [swap]
  957. X        call    [read_seg+bx]        ; this must succeed, if fail
  958. X        jmp    read_seg_loop        ; we never come back here
  959. X
  960. Xexit_swap_in:    mov    bx, [swap]        ; all done, so free resource
  961. X        call    [free_resource+bx]
  962. X        ret
  963. Xswap_in endp
  964. X
  965. X
  966. X;=============================================================================
  967. X; CODE TO SWAP THE IMMAGE OUT TO SECONDARY STORAGE
  968. X;=============================================================================
  969. X; This routine is called to swap the non-resident portion of the program
  970. X; out to the resource specified by the value of [cs:swap].  If the swap out
  971. X; fails, then appropriate routines are called to free the resources allocated
  972. X; up to that point.
  973. X;
  974. X; The steps used to swap the program out are as follows:
  975. X;    - calculate new size of program to remain resident and size to swap
  976. X;      out.
  977. X;    - write out non-resident portion of current segment
  978. X;    - walk DOS allocation chain and write out all other segments owned by
  979. X;      the current program that are contiguous with the _psp segment
  980. X;    - copy the environment down to low memory
  981. X;    - resize the current _psp segment to savesize+envsize.
  982. X;    - free all segments belonging to program except current _psp segment
  983. Xswap_out proc near
  984. X        mov    ax, 05800H    ; get memory alocation strategy
  985. X        int    021H
  986. X        mov    [alstr], ax    ; and save it for future restoration.
  987. X        mov    di, [psp]    ; compute length of program to current
  988. X        mov    bx, cs        ; value of cs, and find program size
  989. X        sub    bx, di        ; by looking at length stored in
  990. X        mov    ax, di        ; arena header found in front of psp
  991. X        dec    ax
  992. X        mov    es, ax
  993. X        mov    si, es:3    ; si is size of program in paragraphs
  994. X        mov    [progsize], si    ; progsize now contains the size.
  995. X
  996. X; Now compute length of program segment to save.
  997. X; Length is:   cs - psp + (offset overlay_code_here+15 >> 4)
  998. X        mov    ax, offset overlay_code_here+15
  999. X        shr    ax, 1
  1000. X        shr    ax, 1
  1001. X        shr    ax, 1
  1002. X        shr    ax, 1
  1003. X        add    bx, ax            ; bx is size of program to keep
  1004. X        sub    si, bx            ; si is # of paragraphs to save.
  1005. X        add    di, bx            ; di is paragraph to start at
  1006. X        mov    resend, di        ; cs:resend is saved start para
  1007. X        mov    al, seg_no_alloc    ; set no allocation for segment
  1008. X        call    write_segment
  1009. X        jc    abort_swap_out
  1010. X
  1011. X; We have now saved the portion of the program segment that will not remain
  1012. X; resident during the exec.  We should now walk the DOS allocation chain and
  1013. X; write out all other segments owned by the current ess. proc 
  1014. X        mov    ax, [psp]
  1015. X        dec    ax
  1016. X        mov    es, ax
  1017. X        mov    bx, offset write_segment_data
  1018. X        call    walk_arena_chain
  1019. X        jc    abort_swap_out
  1020. X
  1021. X; Now we must walk the chain of allocated memory blocks again and free
  1022. X; all those that are owned by the current ess, proc except the one that is
  1023. X; the current ess' proc psp.
  1024. Xfree_segments:    mov    es, [psp]
  1025. X        mov    bx, offset free_dos_segment
  1026. X        call    walk_arena_chain
  1027. X        jnc    copy_environ
  1028. X        jmp    abort_exec_free        ; can't fix it up now.
  1029. X
  1030. X; we have now written all segments that belong to the program to some
  1031. X; other resource.  We can now copy the environment and resize the psp
  1032. X; segment.
  1033. Xcopy_environ:    mov    ax, [envseg]        ; get the environment segment
  1034. X        or    ax, ax            ; skip copy if it's null
  1035. X        je    resize_program
  1036. X        push    ds
  1037. X        push    es
  1038. X        mov    bx, [resend]        ; here is where the environ goes
  1039. X        mov    es, bx        
  1040. X        mov    cx, [envsize]
  1041. X        add    bx, cx
  1042. X        sub    bx, [psp]
  1043. X        mov    [envsize], bx        ; bx is size of program after
  1044. X        shl    cx, 1            ; environ is copied.
  1045. X        shl    cx, 1
  1046. X        shl    cx, 1
  1047. X        shl    cx, 1
  1048. X        mov    ds, ax            ; ds:si is source address
  1049. X        xor    si, si            ; es:di is dest address
  1050. X        mov    di, si            ; cx is count in bytes.
  1051. X        call    copy_data
  1052. X        mov    [envseg], es        ; point the envseg at the
  1053. X        pop    es            ; right spot
  1054. X        pop    ds
  1055. X
  1056. X; We now resize the program to the size specified by cs:envsize.  This will
  1057. X; free the memory taken up by the current program segment.
  1058. Xresize_program: mov    es, [psp]        ; es is segment to resize.
  1059. X        mov    bx, [envsize]        ; bx is size of segment.
  1060. X        mov    ah, 04aH        ; resize memory block
  1061. X        int    21H
  1062. X        jnc    swap_out_ok
  1063. X        jmp    abort_exec_resize    ; disaster
  1064. Xswap_out_ok:    ret
  1065. X
  1066. X; The swap out failed for some reason, so free any allocated resources
  1067. X; and set the carry bit.
  1068. Xabort_swap_out:    mov    bx, [swap]
  1069. X        call    [free_resource+bx]
  1070. X        xor    ax, ax
  1071. X        mov    [swap], ax        ; clear the swap flag
  1072. X        stc
  1073. X        ret
  1074. Xswap_out endp
  1075. X
  1076. X
  1077. X;=============================================================================
  1078. X; CODE TO SET-UP FOR AND EXEC THE CHILD PROCESS
  1079. X;=============================================================================
  1080. X; Actually execute the program.  If cs:swap is set, this code will invoke the
  1081. X; swap-out/swap-in code as required.
  1082. Xdo_exec proc near
  1083. X        cmp    [swap], 0        ; does the user want to swap?
  1084. X        je    no_swap_out        ; nope
  1085. X        call    init_swap        ; figger out where to swap to
  1086. X        jc    no_swap_out        ; if carry set then don't swap
  1087. X        call    swap_out
  1088. X
  1089. Xno_swap_out:    cmp    [interrupted], 0    ; were we interrupted?
  1090. X        jne    leave_exec        ; yep, so clean up, don't exec
  1091. X
  1092. X; set up the parameter block for the DOS exec call.
  1093. X;    offset  contents
  1094. X;        00  segment address of environment to be passed,
  1095. X;          0 => use parents env.
  1096. X;        02  pointer to command tail for new ess. proc 
  1097. X;        06  pointer to fcb1
  1098. SHAR_EOF
  1099. echo "End of part 9"
  1100. echo "File msdos/exec.asm is continued in part 10"
  1101. echo "10" > s2_seq_.tmp
  1102. exit 0
  1103.  
  1104.